1. Field of the Invention
The present invention relates to the authentication of users accessing computer systems, particularly where a single user may wish to access several computer systems without the need to authenticate separately to each system, this is commonly referred to as single sign-on. More particularly, the invention relates to single sign-on using public key cryptography.
2. Description of the Related Art
Authentication is the process by which a computer system assures itself that it knows the true identity of the person accessing it. This is typically achieved by requiring the user to demonstrate possession of some fact or object, such as a secret password. Once the user has authenticated in this way the computer system can allow access to the appropriate resources based on its knowledge of who the user is.
The development of stateless protocols, particularly the Hypertext Transport Protocol (HTTP), makes the process of maintaining the knowledge of the user's identity more difficult, and results in a need for the user's client application (e.g., a web browser) to present some proof of the user's identity with each request to a server application. It would be highly inconvenient for the user to be asked to re-enter a password for each request. Therefore, mechanisms have been developed to allow the client browser to retain some token, which can be automatically presented with each request as evidence of the user's true identity.
One such mechanism is to create a “cookie” when the user authenticates to the server for the first time. This cookie is a piece of data, which the browser retains and resubmits with each subsequent request, and which the server application can validate to assess the user's identity. This is a frequently used method because it is supported by most client browsers and is not overly intrusive to the user. However, it is vulnerable to a number of attacks and does not work well across server applications in different Internet domains.
A second such mechanism uses client certificates, defined by CCITT Recommendation X.509. A client certificate is a statement of the identity of the user which has been digitally signed by a trusted third party (the Certification Authority). Asymmetric cryptographic techniques, such as public/private key, are used to implement client certificates. These asymmetric techniques are generally much more robust than the symmetric cryptographic techniques used by cookie based schemes. Asymmetric cryptographic techniques using client certificates also allow the implementation of signing and non-repudiation functions. Client certificates are not widely used however, because they must be installed on the user's computer, are not well understood by most users, and if implemented badly may be very insecure.
Because client certificates are issued and valid for an extended period of time, they are stored and retained in non-volatile and persistent memory on a user's computer. Normally, this is the user computer's hard drive. The need to install a client certificate on a user's computer is inconvenient and prevents user mobility. Additionally, client certificates may be insecure where more than one user shares a computer. The complexity of client certificates, and the general lack of understanding of them means that users can frequently be tricked into copying the secret key data, which enables an intruder to masquerade as the user. This can be done by an intruder pretending to be a service engineer and simply asking the user to copy some files for analysis. While most users would be suspicious of a stranger asking them for their password, they often do not recognize a request to copy files as suspicious.
With client certificates, the browser does not know which client certificate (where there is more than one) to send to any particular server. This means that the client browser displays a dialog box asking the user which client certificate to send. This is a particular problem for users that work with multiple servers. These servers may be competitors and presentation or use of the client certificate associated with a competitor may be undesirable.
With client certificates, a Public Key Infrastructure (PKI) is required so that lost or compromised client certificates can be revoked, and expired client certificates can be re-issued. Known PKIs have proved to be complex and expensive and many companies have given up and scrapped them.
What is needed is a system and method to support authentication that provides many of the advantages of client certificates without many of the disadvantages.
It is understood that the drawings are for illustration only and are not limiting.